package com.wanmait.houlang.manageController;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.wanmait.houlang.pojo.DTO;
import com.wanmait.houlang.util.AliyunSmsUtils;
import com.wanmait.houlang.util.IgnoreToken;
import com.wanmait.houlang.util.JWTUtils;
import com.wanmait.houlang.util.Result;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Random;
@CrossOrigin
@RestController
public class VerificationCodeController {
    @Resource
    private RedisTemplate redisTemplate;

    @IgnoreToken
    @PostMapping("createCode/{tel:\\d+}")
    public Result createCode(@PathVariable("tel") String tel) throws ClientException {
        //生成验证码
        Random rand=new Random();
        String code="";
        for(int i=0;i<4;i++) {
            int num=rand.nextInt(123);
            if(num>='0'&&num<='9') {
                code=code+(char)num;
                continue;
            }
//            if(num>='a'&&num<='z') {
//                code=code+(char)num;
//                continue;
//            }
//            if(num>='A'&&num<='Z') {
//                code=code+(char)num;
//                continue;
//            }
            i--;
        }
        AliyunSmsUtils.sendSms(tel, code);
//        根据验证码生成token
        Random random = new Random();
        int randCode = random.nextInt(1000);
        String telToken = JWTUtils.createTelToken(String.valueOf(randCode));
//      将生成的token转换成json格式返回到客户端
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("token",telToken);


        DTO dto = new DTO();
        dto.setTelPhone(tel);
        dto.setLoginCode(code);
        //将验证码生成的token保存到redis中
        redisTemplate.opsForValue().set(telToken,dto);
        return Result.success(jsonObject);
    }
}
